Wireless communication networks that allocate communication resources, such as time or frequency, require a scheduler to select data to be transmitted. When multiple users are vying for these resources, the scheduler must analyze the incoming data and determine the data having the highest priority for transmission. Priority has traditionally been based on maximizing overall system throughput or maintaining a certain Quality of Service (QoS) level to ensure data is transmitted in a timely fashion. When maximizing throughput, users having better channel conditions are favored over those with worse channel conditions. Thus, the users with the less favorable channel conditions are always given less priority unless time-sensitive data is discovered.
QoS analysis has been provided in existing systems but in a limited manner, for example, by processing only the section of the data that is ready for transmission or utilizing the buffer size. Normally, incoming data is buffered in queues corresponding to the user. If the QoS analysis only encompasses the section of data that is ready for transmission and not the entire queue, the remaining data in the queue does not affect priority. Thus, the scheduler cannot address urgent packets until they are ready for transmission, which results in QoS failures and inefficiencies. On the other hand, a large buffer size does not necessarily mean that all the packets in the buffer are urgent. These failures and inefficiencies typically further impact those users with less favorable channel conditions.
There have been some schemes to achieve a fixed level of fairness and maximize throughput. However, they lack: (a) the ability to control the fairness, including unfairness among users, (b) delay guarantee measures and (c) the ability to consider adequate information for data in the queue. Wireless network operators may want to control the amount of fairness in their systems. Given the inherent fixed level of fairness of the present schedulers, there is a need for a scheduler capable of maximizing the aggregate throughput, achieve the desired level of fairness among users and, at the same time, meet QoS requirements.